package 反射.reflect;

import java.io.FileOutputStream;
import java.io.PrintStream;
import java.lang.reflect.Field;

public class ObjectFrame {
    //任意对象的字段名和其对应数据保存在文件中去
    public static void saveObject(Object obj) throws Exception {
        PrintStream ps = new PrintStream(new FileOutputStream("C:\\Users\\庄林榜\\Desktop\\Java_Project\\base\\src\\反射\\reflect\\data.txt", true));//打印流
        //obj是任意对象，到底有多少个字段要保存
        Class c = obj.getClass();
        String simpleName = c.getSimpleName();//简名
        ps.println("--------------------" + simpleName + "--------------------");
        //2.从这个类中提取它的全部成员变量
        Field[] fields = c.getDeclaredFields();
        //遍历每个成员变量
        for (Field field : fields) {
            //4.拿到成员变量的名字
            String name = field.getName();
            //5.拿到这个成员变量在对象中的数据
            field.setAccessible(true);//禁止检查访问控制
            String value = field.get(obj) + "";
            ps.println(name + "=" + value);
        }
        ps.close();
    }
}
